@CI
2年前 提问
1个回答

Rootkit基于软件的检测方法有哪些

趣能一姐
2年前

Rootkit基于软件的检测方法有:

  • 行为检测法:行为检测法是通过对比分析已有Rootkit行为特征与当前提取到的特征信息,来决断是否发生了Rootkit攻击行为。该方法是基于对已有Rootkit攻击行为特征库的建立,检测过程首先对目标对象(内存、内核文件等)进行扫描;然后在库中进行比对,看是否存在相吻合的项。行为检测法的特点是对已有Rootkit攻击行为的检测精确度高,但其前提是需要完善的特征库的支撑,所以一些新型或未知的Rootkit攻击很容易被绕过。

  • 完整性检测法:完整性检测法是通过检测系统文件或内核文件的完整性来判断是否存在Rootkit攻击。该方法需要建立齐全的针对系统不同版本在可信状态下的重要文件特征库(Hash值),在检测时可提取当前状态下系统对应文件的特征值,并与库中对应的特征值进行比对,进而确定是否发生了Rootkit攻击。该方法几乎可以检测出任何一种Rootkit攻击行为,而且简单易行,但由于需要事先计算所有可能遭受Rootkit攻击对象的特征值,实现起来相对比较困难。

  • 执行时间检测法:执行时间检测法是对系统运行时所启用的服务指令的执行时间进行计数,以判断是否有其他的代码执行。该方法需要在系统创建时备份原始系统调用函数,并统计其正常状态下的执行时间。如果发生了针对内核的Rootkit攻击,那么不管该攻击采用Hooking或DKOM方式,原始服务指令的执行时间都会增长,而且代码的执行路径也会发生变化。该方法可以检测出已知和未知的Rootkit攻击,但会因计时器(如本地时钟、外部计时器等)的误差产生误报和漏报。

  • 执行路径检测法:执行路径检测法是通过比较分析某个系统服务在可信系统(未被Rootkit攻击的系统)和待检测系统上运行指令数的差异来判断是否存在Rootkit攻击。该方法的实现原理是:当某一系统服务隐藏了Rootkit攻击对象时,系统在调用该被攻击服务时将会执行一些额外的指令,总的指令数必然会增加。该方法从理论上讲是可行的,但在指令执行时CPU需要处于单步模式,频繁的中断操作会严重影响系统的性能。

  • 差异检测法:差异检测法是通过分析比较从系统不同层次获得的进程、网络连接、文件目录等列表信息,再根据存在的差异来检测出是否存在Rootkit攻击。如果一条信息(如进程)在底层列表中出现,但是却没有在高层列表中出现,就说明该信息已经被Rootkit隐藏。检测对象的确定和列表信息的获取是差异检测法的关键。由于攻击代码在运行时一般都需要创建对应的进程,而绝大多数Rootkit攻击行为都将隐藏进程作为必备的手段,所以隐藏进程必然是差异检测的主要对象;列表信息的获取需要在确保对象可信的前提下,尽可能获取到最底层的信息。例如,基于交叉视图的差异检测法理论上可以检测出已知和未知的Rootkit攻击,但前提是系统信息的获得必须是全面和可信的。